//package org.flowers.unbeaten.resource;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.node.ObjectNode;
//import org.activiti.editor.constants.ModelDataJsonConstants;
//import org.activiti.engine.ActivitiException;
//import org.activiti.engine.RepositoryService;
//import org.activiti.engine.repository.Model;
//import org.apache.batik.transcoder.TranscoderInput;
//import org.apache.batik.transcoder.TranscoderOutput;
//import org.apache.batik.transcoder.image.PNGTranscoder;
//import org.springframework.http.HttpStatus;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.InputStream;
//import java.nio.charset.StandardCharsets;
//
///**
// * @description 流程模型保存
// * @author RyanWang
// * @date 2021-07-23 10:41:47
// * @version 1.0
// */
//@RestController
//@RequestMapping("/service")
//public class ModelEditorSaveRestResource implements ModelDataJsonConstants {
//
//    @Resource
//    private RepositoryService repositoryService;
//
//    @Resource
//    private ObjectMapper objectMapper;
//
//    /**
//     * 保存流程
//     * @param modelId 模型ID
//     * @param name 流程模型名称
//     * @param description 流程描述
//     * @param json_xml 流程文件
//     * @param svg_xml 图片
//     */
//    @RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT)
//    @ResponseStatus(value = HttpStatus.OK)
//    public void saveModel(@PathVariable String modelId, String name, String description, String json_xml, String svg_xml) {
//        try {
//            Model model = repositoryService.getModel(modelId);
//            ObjectNode modelJson = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
//            modelJson.put(MODEL_NAME, name);
//            modelJson.put(MODEL_DESCRIPTION, description);
//            model.setMetaInfo(modelJson.toString());
//            model.setName(name);
//            repositoryService.saveModel(model);
//            repositoryService.addModelEditorSource(model.getId(), json_xml.getBytes(StandardCharsets.UTF_8));
//
//            InputStream svgStream = new ByteArrayInputStream(svg_xml.getBytes(StandardCharsets.UTF_8));
//            TranscoderInput input = new TranscoderInput(svgStream);
//            PNGTranscoder transcoder = new PNGTranscoder();
//            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//            TranscoderOutput output = new TranscoderOutput(outStream);
//
//            transcoder.transcode(input, output);
//            final byte[] result = outStream.toByteArray();
//            repositoryService.addModelEditorSourceExtra(model.getId(), result);
//            outStream.close();
//        } catch (Exception e) {
//            throw new ActivitiException("Error saving model", e);
//        }
//    }
//}
